unitconf.set('bindir', bindir)
configure_file(
- input: 'org.gnome.Shell-x11.service.in',
- output: 'org.gnome.Shell-x11.service',
+ input: 'org.gnome.Shell@x11.service.in',
+ output: 'org.gnome.Shell@x11.service',
configuration: unitconf,
install_dir: systemduserunitdir
)
configure_file(
- input: 'org.gnome.Shell-wayland.service.in',
- output: 'org.gnome.Shell-wayland.service',
+ input: 'org.gnome.Shell@wayland.service.in',
+ output: 'org.gnome.Shell@wayland.service',
configuration: unitconf,
install_dir: systemduserunitdir
)
- units = files('org.gnome.Shell-x11.target',
- 'org.gnome.Shell-wayland.target',
+ units = files('org.gnome.Shell.target',
'org.gnome.Shell-disable-extensions.service')
install_data(units, install_dir: systemduserunitdir)
+++ /dev/null
-[Unit]
-Description=GNOME Shell on Wayland
-# On wayland, force a session shutdown
-OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-shutdown.target
-OnFailureJobMode=replace-irreversibly
-CollectMode=inactive-or-failed
-RefuseManualStart=on
-RefuseManualStop=on
-
-After=gnome-session-manager.target
-
-Requisite=gnome-session-initialized.target
-PartOf=gnome-session-initialized.target
-Before=gnome-session-initialized.target
-
-[Service]
-Type=notify
-ExecStart=@bindir@/gnome-shell
-
-# unset some environment variables that were set by the shell and won't work now that the shell is gone
-ExecStopPost=-systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY
-
-# Exit code 1 means we are probably *not* dealing with an extension failure
-SuccessExitStatus=1
-# On wayland we cannot restart
-Restart=no
-# Kill any stubborn child processes after this long
-TimeoutStopSec=5
+++ /dev/null
-[Unit]
-Description=GNOME Shell on Wayland
-DefaultDependencies=no
-
-Requisite=gnome-session-initialized.target
-PartOf=gnome-session-initialized.target
-Before=gnome-session-initialized.target
-
-Requires=org.gnome.Shell-wayland.service
-After=org.gnome.Shell-wayland.service
+++ /dev/null
-[Unit]
-Description=GNOME Shell on X11
-# On X11, try to show the GNOME Session Failed screen
-OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-failed.target
-OnFailureJobMode=replace
-CollectMode=inactive-or-failed
-RefuseManualStart=on
-RefuseManualStop=on
-
-After=gnome-session-manager.target
-
-Requisite=gnome-session-initialized.target
-PartOf=gnome-session-initialized.target
-Before=gnome-session-initialized.target
-
-# Limit startup frequency more than the default
-StartLimitIntervalSec=15s
-StartLimitBurst=3
-
-[Service]
-Type=notify
-ExecStart=@bindir@/gnome-shell
-# Exit code 1 means we are probably *not* dealing with an extension failure
-SuccessExitStatus=1
-# On X11 we want to restart on-success (Alt+F2 + r) and on-failure.
-Restart=always
-# Do not wait before restarting the shell
-RestartSec=0ms
-# Kill any stubborn child processes after this long
-TimeoutStopSec=5
+++ /dev/null
-[Unit]
-Description=GNOME Shell on X11
-DefaultDependencies=no
-
-Requisite=gnome-session-initialized.target
-PartOf=gnome-session-initialized.target
-Before=gnome-session-initialized.target
-
-Requires=org.gnome.Shell-x11.service
-After=org.gnome.Shell-x11.service
--- /dev/null
+[Unit]
+Description=GNOME Shell on Wayland
+DefaultDependencies=no
+
+Requisite=gnome-session-initialized.target
+PartOf=gnome-session-initialized.target
+Before=gnome-session-initialized.target
+
+Wants=org.gnome.Shell@wayland.service
+Wants=org.gnome.Shell@x11.service
--- /dev/null
+[Unit]
+Description=GNOME Shell on Wayland
+# On wayland, force a session shutdown
+OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-shutdown.target
+OnFailureJobMode=replace-irreversibly
+CollectMode=inactive-or-failed
+RefuseManualStart=on
+RefuseManualStop=on
+
+After=gnome-session-manager.target
+
+Requisite=gnome-session-initialized.target
+PartOf=gnome-session-initialized.target
+Before=gnome-session-initialized.target
+
+[Service]
+Type=notify
+# NOTE: This can be replaced with ConditionEnvironment=XDG_SESSION_TYPE=%I
+# with systemd >= 245. Also, the current solution is kind of painful
+# as systemd had a bug where it retries the condition.
+# Only start if the template instance matches the session type.
+ExecCondition=/bin/sh -c 'test "$XDG_SESSION_TYPE" = "%I" || exit 2'
+ExecStart=@bindir@/gnome-shell
+# Exit code 1 means we are probably *not* dealing with an extension failure
+SuccessExitStatus=1
+
+# unset some environment variables that were set by the shell and won't work now that the shell is gone
+ExecStopPost=-systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY
+
+# On wayland we cannot restart
+Restart=no
+# Kill any stubborn child processes after this long
+TimeoutStopSec=5
--- /dev/null
+[Unit]
+Description=GNOME Shell on X11
+# On X11, try to show the GNOME Session Failed screen
+OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-failed.target
+OnFailureJobMode=replace
+CollectMode=inactive-or-failed
+RefuseManualStart=on
+RefuseManualStop=on
+
+After=gnome-session-manager.target
+
+Requisite=gnome-session-initialized.target
+PartOf=gnome-session-initialized.target
+Before=gnome-session-initialized.target
+
+# Limit startup frequency more than the default
+StartLimitIntervalSec=15s
+StartLimitBurst=3
+
+[Service]
+Type=notify
+# NOTE: This can be replaced with ConditionEnvironment=XDG_SESSION_TYPE=%I
+# with systemd >= 245. Also, the current solution is kind of painful
+# as systemd had a bug where it retries the condition.
+# Only start if the template instance matches the session type.
+ExecCondition=/bin/sh -c 'test "$XDG_SESSION_TYPE" = "%I" || exit 2'
+ExecStart=@bindir@/gnome-shell
+# Exit code 1 means we are probably *not* dealing with an extension failure
+SuccessExitStatus=1
+
+# On X11 we do not need to unset any variables
+
+# On X11 we want to restart on-success (Alt+F2 + r) and on-failure.
+Restart=always
+# Do not wait before restarting the shell
+RestartSec=0ms
+# Kill any stubborn child processes after this long
+TimeoutStopSec=5